package com.dahua.db;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**
 * 数据库操作类
 *
 * @author fuxiang
 */
public class DBManager {
    private DBHelper helper;
    private SQLiteDatabase db;

    public DBManager(Context context) {
        helper = new DBHelper(context);
        // 因为getWritableDatabase内部调用了mContext.openOrCreateDatabase(mName, 0,
        // mFactory);
        // 所以要确保context已初始化,我们可以把实例化DBManager的步骤放在Activity的onCreate里
        db = helper.getWritableDatabase();
    }

    /**
     * 插入历史记录
     */
    public void insertHistory(List<History> list) {
        db.beginTransaction(); // 开始事务
        try {
            for (History history : list) {
                //插入前先做删除操作，确保唯一
                deleteSingleHistory(history.getInfo());
                // ContentValues以键值对的形式存放数据
                ContentValues cv = new ContentValues();
                cv.put("info", history.getInfo());
                // 插入ContentValues中的数据
                db.insert("history", null, cv);
            }
            db.setTransactionSuccessful(); // 设置事务成功完成
        } finally {
            db.endTransaction(); // 结束事务
        }

    }

    /**
     * 插入餐厅
     *
     * @param list
     */
//	public void insertShop(List<ShopInfoBean> list) {
//		db.beginTransaction(); // 开始事务
//		try {
//			for (ShopInfoBean shop : list) {
//				ContentValues cv = new ContentValues();
//				// 餐厅表
//				// icon代表餐厅图片，name代表餐厅名称，quan代表是否有优惠券（暂不用），renzheng代表是否认证（暂不用）
//				// price代表价格,pingfen代表餐厅评价，type代表餐厅类别，address代表餐厅地址，lat代表纬度值，lng代表经度值
//				cv.put("shop_id", shop.getShop_id());
//				cv.put("icon", shop.getShop_pic_small());
//				cv.put("name", shop.getShop_name());
//				cv.put("price", shop.getPerson_agin());
//				cv.put("pingfen", shop.getPinfeng());
//				cv.put("type", shop.getShop_type_name());
//				cv.put("address", shop.getShop_address());
//				cv.put("lat", shop.getShop_lat());
//				cv.put("lng", shop.getShop_lng());
//				// 插入ContentValues中的数据
//				db.insert("shop", null, cv);
//
//			}
//			db.setTransactionSuccessful(); // 设置事务成功完成
//		} finally {
//			db.endTransaction(); // 结束事务
//		}
//	}

    /**
     * 插入用户信息
     *
     * @param list
     */
//	public void insertUserInfo(User user) {
//		db.beginTransaction(); // 开始事务
//		try {
//			Cursor c = db.rawQuery("SELECT * FROM user where user_id=?",
//					new String[] { user.getUid() });
//			if (c.moveToFirst()) {
//				updateUserInfo(user);
//			} else {
//				ContentValues cv = new ContentValues();
//				cv.put("user_id", user.getUid());
//				cv.put("user_name", user.getUserName());
//				cv.put("head_img_url", user.getHeadImg());
//				cv.put("grade", user.getGrade());
//				cv.put("score", user.getScore());
//				cv.put("is_qiandao", user.getQianDaoTime());
//				cv.put("today_can_get_score", user.getTodayCanGetScore());
//				cv.put("purcase_count", user.getPurcaseCount());
//				cv.put("mobile", user.getMobile());
//				cv.put("real_name", user.getRealName());
//				cv.put("email", user.getEmail());
//				cv.put("collection_count", user.getCollectionCount());
//				String isMsgRead = "0";
//				if (user.isNewMsgRead()) {
//					isMsgRead = "1";
//				}
//				cv.put("is_new_message_read", isMsgRead);
//				// 插入ContentValues中的数据
//				db.insert("user", null, cv);
//			}
//			db.setTransactionSuccessful(); // 设置事务成功完成
//		} finally {
//			db.endTransaction(); // 结束事务
//		}
//	}

    /**
     * 插入收藏个数
     *
     * @param user
     */
//	public void insertUserCollectionCount(User user) {
//		db.beginTransaction(); // 开始事务
//		try {
//			Cursor c = db.rawQuery("SELECT * FROM user where user_id=?",
//					new String[] { user.getUid() });
//			if (c.moveToFirst()) {
//				updateUserCount(user);
//			} else {
//				ContentValues cv = new ContentValues();
//				cv.put("user_id", user.getUid());
//				cv.put("collection_count", user.getCollectionCount());
//				// 插入ContentValues中的数据
//				db.insert("user", null, cv);
//			}
//			db.setTransactionSuccessful(); // 设置事务成功完成
//		} finally {
//			db.endTransaction(); // 结束事务
//		}
//	}

    /**
     * 更新userinfo
     *
     * @param user
     */
//	public void updateUserInfo(User user) {
//		db.beginTransaction(); // 开始事务
//		try {
//			ContentValues cv = new ContentValues();
//			cv.put("user_id", user.getUid());
//			cv.put("user_name", user.getUserName());
//			cv.put("head_img_url", user.getHeadImg());
//			cv.put("grade", user.getGrade());
//			cv.put("score", user.getScore());
//			cv.put("is_qiandao", user.getQianDaoTime());
//			cv.put("today_can_get_score", user.getTodayCanGetScore());
//			cv.put("purcase_count", user.getPurcaseCount());
//			cv.put("collection_count", user.getCollectionCount());
//			cv.put("mobile", user.getMobile());
//			cv.put("real_name", user.getRealName());
//			cv.put("email", user.getEmail());
//			String isMsgRead = "0";
//			if (user.isNewMsgRead()) {
//				isMsgRead = "1";
//			}
//			cv.put("is_new_message_read", isMsgRead);
//			// 插入ContentValues中的数据
//			db.update("user", cv, "user_id=?", new String[] { user.getUid() });
//			db.setTransactionSuccessful(); // 设置事务成功完成
//		} finally {
//			db.endTransaction(); // 结束事务
//		}
//	}

    /**
     * 更新收藏个数
     *
     * @param user
     */
//	public void updateUserCount(User user) {
//		db.beginTransaction(); // 开始事务
//		try {
//			ContentValues cv = new ContentValues();
//			cv.put("user_id", user.getUid());
//			cv.put("collection_count", user.getCollectionCount());
//			// 插入ContentValues中的数据
//			db.update("user", cv, "user_id=?", new String[] { user.getUid() });
//			db.setTransactionSuccessful(); // 设置事务成功完成
//		} finally {
//			db.endTransaction(); // 结束事务
//		}
//	}

    /**
     * 删除历史记录
     */
    public void deleteHistory() {
        db.delete("history", null, null);
    }

    /**
     * 删除单条历史记录
     *
     * @param info
     */
    public void deleteSingleHistory(String info) {
        db.delete("history", "info=? ", new String[]{info});
    }

    /**
     * 删除餐厅
     */
    public void deleteShop() {
        db.delete("shop", null, null);
    }

    /**
     * 删除用户
     */
    public void deleteUser() {
        db.delete("user", null, null);
    }

    /**
     * 获取历史记录
     *
     * @return
     */
    public List<History> getHistory() {
        List<History> list = new ArrayList<History>();

        Cursor c = db.rawQuery("SELECT * FROM history", null);
        while (c.moveToNext()) {
            History history = new History();
            history.set_id(c.getInt(c.getColumnIndex("_id")));
            history.setInfo(c.getString(c.getColumnIndex("info")));
            list.add(history);
        }
        c.close();
        return list;
    }

    /**
     * 获取餐厅
     *
     * @return
     */
//	public List<ShopInfoBean> getShop() {
//		List<ShopInfoBean> list = new ArrayList<ShopInfoBean>();
//
//		Cursor c = db.rawQuery("SELECT * FROM shop", null);
//		while (c.moveToNext()) {
//			ShopInfoBean shop = new ShopInfoBean();
//			shop.set_id(c.getInt(c.getColumnIndex("_id")));
//			shop.setShop_id(c.getString(c.getColumnIndex("shop_id")));
//			shop.setShop_pic_small(c.getString(c.getColumnIndex("icon")));
//			shop.setShop_name(c.getString(c.getColumnIndex("name")));
//			shop.setPerson_agin(c.getString(c.getColumnIndex("price")));
//			shop.setPinfeng(c.getString(c.getColumnIndex("pingfen")));
//			shop.setShop_type_name(c.getString(c.getColumnIndex("type")));
//			shop.setShop_address(c.getString(c.getColumnIndex("address")));
//			shop.setShop_lat(c.getString(c.getColumnIndex("lat")));
//			shop.setShop_lng(c.getString(c.getColumnIndex("lng")));
//			list.add(shop);
//		}
//		c.close();
//
//		return list;
//	}

    /**
     * 获取用户 user_name：昵称用户名；head_img_url:头像;score:积分;is_qiandao:是否签到;
     * today_can_get_score:今日可领积分; // *
     * purcase_count:钱包里的数量；collection_count:收藏的数量
     * ；is_new_message_read:是否有新的消息未读；
     *
     * @return
     */
//	public User getUser(String uid) {
//		User user = new User();
//		Cursor c = db.rawQuery("SELECT * FROM user where user_id=?", new String[]{uid});
//		while (c.moveToNext()) {
//			user.setUserName(c.getString(c.getColumnIndex("user_name")));
//			user.setHeadImg(c.getString(c.getColumnIndex("head_img_url")));
//			user.setGrade(c.getString(c.getColumnIndex("grade")));
//			user.setScore(c.getString(c.getColumnIndex("score")));
//			String isQianDao = c.getString(c.getColumnIndex("is_qiandao"));
//			user.setQianDaoTime(isQianDao);
//			user.setTodayCanGetScore(c.getString(c
//					.getColumnIndex("today_can_get_score")));
//			user.setPurcaseCount(c.getString(c.getColumnIndex("purcase_count")));
//			user.setMobile(c.getString(c.getColumnIndex("mobile")));
//			user.setRealName(c.getString(c.getColumnIndex("real_name")));
//			user.setEmail(c.getString(c.getColumnIndex("email")));
//			user.setCollectionCount(c.getString(c
//					.getColumnIndex("collection_count")));
//			String isMsgRead = c.getString(c
//					.getColumnIndex("is_new_message_read"));
//			if ("1".equals(isMsgRead)) {
//				user.setNewMsgRead(true);
//			} else {
//				user.setNewMsgRead(false);
//			}
//		}
//		c.close();
//
//		return user;
//	}

    /**
     * 关闭数据库连接
     */
    public void closeDB() {
        db.close();
    }
}
